home *** CD-ROM | disk | FTP | other *** search
- *Este programa se llama generico.prg
-
- *Este programa fue modificado a partir de un original de dBASE.
- *Se ha a±adido un bucle de eventos, una casilla de selecci≤n y
- *algunos botones. Una aplicaci≤n verdadera de Windows requerirφa
- *algunos elementos adicionales. Observe que este programa utiliza
- *tambiΘn la clßusula VALID de dBFast de manera especial. dBFast
- *permite utilizar la palabra clave "CHANGE" con una clßusula VALID.
- *Si se utiliza esta sentencia, se eval·a s≤lo si el usuario cambia
- *realmente los datos. Aquφ la utilizamos para determinar el orden
- *del φndice. Si el usuario introduce un n·mero de la seguridad
- *social, asignamos un φndice al n·mero de seguridad social y
- *realizamos las b·squedas en ese φndice. Si el usuario cambia el
- *nombre, creamos ese φndice (por defecto).
- *
-
- #define ACTIVEGETS 1
- #define READSAVE 2
- #define WAITING 3
- #define NORMAL 4
-
- #define NO_EVENT -1
- #define KEYBD_EVENT 1
- #define MENU_EVENT 2
- #define SELECTWINDOW_EVENT 3
- #define CLOSEWINDOW_EVENT 5
- #define BUTTON_EVENT 6
-
- #define OUREDIT 1
- #define OURNEXT 2
- #define OURPREV 3
- #define OUREXIT 4
- #define OURNEW 5
- #define OURDELETE 6
-
-
-
- SET PROCEDURE TO generic
-
-
- set deleted on
-
- PUBLIC begread, mode
- STORE 1 TO begread
- SET EXIT VIDEO TO 112
-
- CREATE BUTTON ' Siguiente ' AT 19,3
- CREATE BUTTON ' Anterior ' AT 19, 17
- CREATE BUTTON ' Borrar ' AT 19,30
- CREATE BUTTON ' Nuevo ' AT 19,41
- CREATE BUTTON ' Cancelar ' AT 19,52
- CREATE BUTTON ' Editar ' AT 19,65
- mode = OUREDIT
-
- DO PaintScreen
- DO dispinfo
-
- set exit video to sayvideo()
-
- DO WHILE .T.
- ENABLE BUTTON ' Siguiente '
- ENABLE BUTTON ' Anterior '
- ENABLE BUTTON ' Borrar '
- ENABLE BUTTON ' Nuevo '
- ENABLE BUTTON ' Cancelar '
- ENABLE BUTTON ' Editar '
-
- STORE nombre TO mname
- STORE nss TO mssn
- *Observe el uso de la palabra CHANGE en los siguientes gets.
- @ 4,11 GET mname VALID chkname(mname) CHANGE MESSAGE ;
- 'Introduzca el nombre que desea buscar' ;
- ERROR 'Nombre no encontrado'
- @ 4,58 GET mssn VALID chkssn(mssn) CHANGE MESSAGE ;
- 'Introduzca el n·mero de cuenta que desea buscar' ;
- ERROR 'El n·mero de cuenta no existe'
-
- action = GetEvent(ACTIVEGETS,begread)
- action = TranslateEvent(action)
-
- IF .NOT. doevent(action,.F.)
- IF action = OUREXIT
- EXIT
- ENDIF
- LOOP
- ENDIF
-
- firstpass = .t.
-
- DO WHILE .T.
- IF action = OURNEW
- mode = OURNEW
- APPEND BLANK
- if firstpass
- @ 4,11 GET nombre
- @ 4,58 GET ssn
- endif
- DISABLE BUTTON ' Siguiente '
- DISABLE BUTTON ' Anterior '
- DISABLE BUTTON ' Borrar '
- DISABLE BUTTON ' Nuevo '
- DISABLE BUTTON ' Editar '
- ELSE
- DISABLE BUTTON ' Editar '
- DISABLE BUTTON ' Nuevo '
- @ 4,11 SAY nombre
- @ 4,58 SAY nss
- mode = OUREDIT
- ENDIF
- if firstpass
- @ 8,14 GET direccion
- @ 8,62 GET fecha MESSAGE 'Introduzca la fecha del ·ltimo contacto'
- @ 10,14 GET ciudad
- @ 12,14 GET provincia
- @ 12,38 GET cod_postal
- @ 10,54 GET notas editbox to 5,15
- @ 16,49 GET activ0 CHECKBOX 'Activo'
- @ 14,21 GET tel_ofic
- @ 16,21 GET tel_part
- endif
-
- action = GetEvent(READSAVE,0)
- action = TranslateEvent(action)
- IF doevent(action,.T.)
- EXIT
- ENDIF
-
- firstpass = .f.
- update gets
- ENDDO
- clear gets
- ENDDO
-
- RELEASE begread, mode
- CLOSE ALL
- RETURN
-
- ********************************************
- PROCEDURE PaintScreen
- ********************************************
-
- USE tnombre
- INDEX on nss to tnss
- INDEX on nombre to tnombre
- use tnombre index tnombre, tnss
-
- color = sayvideo()
- *Leer el color elegido por el usuario, enmascarar el color de fondo y a±adir 1 para hacerlo azul
- color = bitand(240,color) + 1
- set say video to color
- center('Entrada y Modificaci≤n de Clientes',1,0,78,10)
- set color to
-
- @ 4,3 SAY 'Nombre:'
- @ 4,43 SAY 'N·mero Cuenta:'
- @ 8,3 SAY 'Direcci≤n:'
- @ 10,3 SAY 'Ciudad:'
- @ 12,3 SAY 'Provincia:'
- @ 12,32 SAY 'C.P.:'
- @ 14,3 SAY 'Tel. Oficina:'
- @ 16,3 SAY 'Tel. Particular:'
- @ 8,47 SAY '┌lt. Contacto:'
- @ 10,47 SAY 'Notas'
- @ 7,2 TO 17,73
- return
-
-
- ********************************************
- FUNCTION chkname
- ********************************************
- PARAMETER target
-
- SET INDEX TO tnombre
- SEEK TRIM(target)
- begread = 1 | Si conviene, cambia el campo get por defecto
- IF .NOT. EOF()
- GETNO(30) | No se leen los caracteres por encima de este n·mero
- ELSE
- GO BOTTOM
- RETURN(.F.)
- ENDIF
- RETURN(.T.)
-
-
- ********************************************
- FUNCTION chkssn
- ********************************************
- PARAMETER target
-
- SET INDEX TO tnss
- SEEK TRIM(target)
- begread = 2 | Si conviene, cambia el campo get por defecto
- IF .NOT. EOF()
- GETNO(30) | No se leen los caracteres por encima de este n·mero
- ELSE
- GO BOTTOM
- RETURN(.F.)
- ENDIF
- RETURN(.T.)
-
-
- ********************************************
- FUNCTION doevent
- ********************************************
- PARAMETER act, dflt
-
- DO CASE
- CASE act = OUREXIT
- IF mode = OUREDIT
- GOTO CURRENT
- ELSE
- UNPEND
- ENDIF
- RETURN(dflt)
- CASE act = 0 |Entrada incorrecta
- RETURN(.F.)
- CASE act = OURNEXT
- SKIP
- IF EOF()
- SKIP -1
- ENDIF
- do dispinfo
- RETURN(.f.)
- CASE act = OURPREV
- SKIP -1
- IF BOF()
- SKIP
- ENDIF
- DO dispinfo
- RETURN(.F.)
- CASE act = OURDELETE
- DELETE
- SKIP
- IF EOF()
- SKIP -1
- ENDIF
- DO dispinfo
- RETURN(dflt)
- ENDCASE
- RETURN(.T.)
-
-
- ********************************************
- PROCEDURE dispinfo
- ********************************************
-
- @ 8,14 SAY direccion
- @ 10,14 SAY ciudad
- @ 12,14 SAY provincia
- @ 12,38 SAY cod_postal PICTURE '99999'
- @ 14,21 SAY tel_ofic
- @ 16,21 SAY tel_part
- @ 8,62 SAY fecha
-
- RETURN
-
-
- ********************************************
- function GetEvent
- ********************************************
- parameter emode, getstart
-
- do case
- case emode = ACTIVEGETS
- if getstart > 0
- read starting with getstart
- else
- read
- endif
- case emode = READSAVE
- read save
- case emode = WAITING
- @ 0,0 say
- wait ""
- otherwise |NORMAL
- return(chkevent())
- endcase
- return(event())
-
-
- ********************************************
- function TranslateEvent(ievent)
- ********************************************
- parameter ievent
-
- do case
- case ievent = KEYBD_EVENT
- key = LASTKEY()
- DO CASE
- CASE key = 27
- RETURN(OUREXIT)
- CASE key = 530
- RETURN(OURPREV)
- CASE key = 536
- RETURN(OURNEXT)
- OTHERWISE
- RETURN(OUREDIT)
- ENDCASE
- case ievent = BUTTON_EVENT | evento de bot≤n
- STORE BUTTON() TO btext
- DO CASE
- CASE btext = ' Siguiente '
- RETURN(OURNEXT)
- CASE btext = ' Anterior '
- RETURN(OURPREV)
- CASE btext = ' Borrar '
- RETURN(OURDELETE)
- CASE btext = ' Nuevo '
- RETURN(OURNEW)
- CASE btext = 'Cancelar'
- RETURN(OUREXIT)
- CASE btext = ' Editar '
- ENDCASE
- otherwise
- BEEP
- RETURN(0)
- endcase
- RETURN(OUREDIT)
-